package cn.demoncat.util.websocket.entity;

import cn.demoncat.util.lang.LogLineHtmlUtil;
import cn.demoncat.util.lang.entity.LineReadCallback;
import cn.demoncat.util.lang.entity.Result;
import cn.demoncat.util.websocket.util.WebSocketUtil;

/**
 * WebSocket行读取器
 * 
 * @author 延晓磊
 *
 * @since 2019年7月1日
 */
public class WsLineReadCallback extends LineReadCallback {

	private UserSession session;

	/**
	 * 创建
	 */
	public WsLineReadCallback(UserSession session) {
		super();
		this.session = session;
	}

	@Override
	public void readImpl(String line) {
		readSend(Result.successStr(LogLineHtmlUtil.getLine(line)));
	}

	@Override
	public void readErrorImpl(String line) {
		readSend(Result.successStr(LogLineHtmlUtil.getErrorLine(line)));
	}

	@Override
	public void readWarnImpl(String line) {
		readSend(Result.successStr(LogLineHtmlUtil.getWarnLine(line)));
	}
	
	@Override
	public void readFinish() {
		readSend(Result.FINISH);
	}

	public UserSession getSession() {
		return session;
	}

	public void setSession(UserSession session) {
		this.session = session;
	}

	/**
	 * 发送消息，连接关闭时关闭读取器
	 * 
	 * @param result	输出的结果
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年7月21日
	 */
	private void readSend(Result result) {
		if (!WebSocketUtil.send(session.getSession(), result.toJson())) {
			setStatus(false);
		}
	}
	
}
